package com.bestcem.xm.user.util.business;

import com.bestcem.xm.user.constant.BusinessConstant;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;

/**
 * 组织层级工具类
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/7/20 15:33
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class GroupLevelUtil {

    /**
     * 层级名称非法字符
     */
    private static final String[] USER_LEVEL_NAME_ILLEGAL_CHAR = {":", "\\", "/", "?", "*", "[", "]"};

    /**
     * 处理非法层级名称
     *
     * 在重命名工作表时输入的名称无效。请尝试以下操作:
     *      确认输入的名称不多于31个字符。
     *      确认名称中不包含以下字符:: \ / ? * [ 或 ]。
     *      确认名称的第一个或者最后一个字符不能是单引号。
     *      确认工作表名称不为空。
     *
     * @return String
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/7/19 11:31
     */
    public static boolean checkLevelNameInvalid(String levelName) {
        return StringUtils.isBlank(levelName)
                || levelName.length() > BusinessConstant.USER_LEVEL_NAME_MAX_LENGTH
                || StringUtils.containsAny(levelName, USER_LEVEL_NAME_ILLEGAL_CHAR)
                || StringUtils.startsWith(levelName, BusinessConstant.USER_LEVEL_NAME_ILLEGAL_START_OR_END)
                || StringUtils.endsWith(levelName, BusinessConstant.USER_LEVEL_NAME_ILLEGAL_START_OR_END);
    }

}
